Vignetting Analysis
Given a system or ray bundle and a set of apertures this package provides a basic tool for evaluating vignetting criteria at each aperture. Along with identifying, by index, which apertures cause partial or full vignetting, the returned Vignetting data structure holds a 5 column semi-diameter matrix in its M field which contains:
- The provided aperture size;
- The marginal ray limit: the size at which the aperture becomes the stop due to limiting the on-axis ray bundle;
- The size necessary for no vignetting to occur;
- The size at which the half-vignetting condition is satisified;
- The size at which the aperture clips the entire off-axis ray bundle; this is the minimum aperture size at which the given field of view is still supported down to approximately zero irradiance.
In addition, the maximum system field of view for the unvignetted, half-vignetted, and fully-vignetted cases is determined for the input aperture sizes.
Querying the FOV field extracts the maximum supported full fields of view in degrees, paraxial principal ray slopes, and the corresponding image heights for all three vignetting conditions as a matrix with the rows corresponding to the conditions and the columns to the fields, slopes, and heights, respectively.
In essence, the M matrix represents the supported aperture sizes for each case given the system field of view and the FOV matrix corresponds to the maximal fields for the given aperture sizes.
Any NaNs in the M matrix signify that there is no possible size which fits the criteria due to the aforementioned limiting factor.
julia> vig = vignetting(system)Partially vignetted: [1, 2, 3, 7, 8] Maximum supported FOVs: Unvignetted: 6.0997°, h′: 2.7060 Half-vignetted: 93.5337°, h′: 54.0216 Fully-vignetted: 128.5177°, h′: 105.3371 a limit un half full 8×5 Matrix{Float64}: 9.5 9.02413 12.805 NaN NaN 9.5 8.27315 10.8017 NaN NaN 9.0 7.59772 9.0471 NaN NaN 9.0 7.48453 8.65861 NaN NaN 7.63 7.63 7.63 NaN NaN 8.5 7.68614 8.13925 NaN NaN 8.5 7.77516 8.94668 NaN NaN 8.5 7.82878 10.2157 NaN NaN
julia> # FOVs, slopes, heights vig.FOV3×3 Matrix{Float64}: 6.09972 0.0532804 2.70603 93.5337 1.06366 54.0216 128.518 2.07403 105.337
There is also support for analyzing a traced RayBasis.